﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using hercules.Models.Dados;

namespace hercules.Models.Negocio
{
    public class NegocioFornecedor
    {
        private readonly IRepositorioGenerico<Pessoa, ControleEstoqueEntities> repositorioPessoa;

        public NegocioFornecedor()
        {
            repositorioPessoa = new RepositorioGenerico<Pessoa, ControleEstoqueEntities>("chave");
        }


        public bool Inserir(Pessoa fornecedor)
        {
            repositorioPessoa.Inserir(fornecedor);
            return repositorioPessoa.SaveChanges() > 0;
        }

        public bool Editar(Pessoa fornecedor)
        {
            Pessoa _fornecedor = Obter(fornecedor.idPessoa);
            _fornecedor.agencia = fornecedor.agencia;
            _fornecedor.bairro = fornecedor.bairro;
            _fornecedor.banco = fornecedor.banco;
            _fornecedor.cep = fornecedor.cep;
            _fornecedor.cidade = fornecedor.cidade;
            _fornecedor.cnpj = fornecedor.cnpj;
            _fornecedor.conta = fornecedor.conta;
            _fornecedor.cpf = fornecedor.cpf;
            _fornecedor.email = fornecedor.email;
            _fornecedor.endereco = fornecedor.endereco;
            _fornecedor.estado = fornecedor.estado;
            _fornecedor.insc_estadual = fornecedor.insc_estadual;
            _fornecedor.nome = fornecedor.nome;
            _fornecedor.representante = fornecedor.representante;
            _fornecedor.rg = fornecedor.rg;

            //repositorioPessoa.Attach(fornecedor);

            return repositorioPessoa.SaveChanges() > 0;
        }

        public bool Remover(Int32 codPessoa)
        {
            repositorioPessoa.Remover(fornecedor => fornecedor.idPessoa == codPessoa);
            return repositorioPessoa.SaveChanges() > 0;
        }

        public List<Pessoa> ObterTodos()
        {
            return repositorioPessoa.ObterTodos().ToList();
        }

        public Pessoa Obter(int codPessoa)
        {
            return repositorioPessoa.ObterEntidade(fornecedor => fornecedor.idPessoa == codPessoa);
        }

        public bool EqualsFornecedor(Pessoa fornecedor1, Pessoa fornecedor2)
        {
            //TODO: IMPLEMENTAR MÉTODO EQUALS
            return true;
        }
    }
}